/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.general.beans;

import cip.util.ControladorAbstracto;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.cip.esymons.general.bc.HistorialConexionDelegate;
import org.cip.esymons.general.be.HistorialConexion;

/**
 *
 * @author ADMINISTRADOR
 */
public class JasperController {

    private HistorialConexionDelegate delegadoConexion;
    private List<HistorialConexion> listaHistorial;

    public JasperController() {

        delegadoConexion = new HistorialConexionDelegate();
        listaHistorial = new ArrayList<HistorialConexion>();
    }

    public List<HistorialConexion> getListaHistorial() {
        return listaHistorial;
    }

    public void setListaHistorial(List<HistorialConexion> listaHistorial) {
        this.listaHistorial = listaHistorial;
    }

    
    public HistorialConexionDelegate getDelegadoConexion() {
        return delegadoConexion;
    }

    public void setDelegadoConexion(HistorialConexionDelegate delegadoConexion) {
        this.delegadoConexion = delegadoConexion;
    }


    @SuppressWarnings("static-access")
    public String reporteHistorial() {

        Map parametros = new HashMap();
        HistorialConexionController hc = (HistorialConexionController) ControladorAbstracto.getBean("HistorialConexionController");

        if(hc.getFecha1() == null && hc.getFecha2() == null){
            listaHistorial = delegadoConexion.findAll();
            String rango = "";
            parametros.put("rango", rango);
            String cantidad = "Nro de Conexiones: "+listaHistorial.size();
            parametros.put("cantidad", cantidad);
        }else{
            listaHistorial = delegadoConexion.listaPorHistorialPorFechas(hc.getFecha1(), hc.getFecha2());
            String rango = "Conexiones en Fechas de : "+hc.getFecha1()+" - "+hc.getFecha2();
            parametros.put("rango", rango);
            String cantidad = "Nro de Conexiones: "+listaHistorial.size();
            parametros.put("cantidad", cantidad);
        }

        HttpServletRequest request1 = ControladorAbstracto.getRequest();
        String Imagen = "/img/logocipcdll.gif";
        String logo = request1.getRealPath(Imagen);
        parametros.put("logo", logo);

        if (listaHistorial.size() > 0) {
            RutaCarpetaReporte ruta = new RutaCarpetaReporte();
            String rutaJasper = "", rutaPDF = "";
            rutaJasper = ruta.getRutaReporte() + "rptHistorialConexion.jasper";
//            rutaPDF = ruta.getRuta() + "rptHistorialConexion.pdf";//ruta windows prueba
            rutaPDF = ruta.getRutaPDF() + "rptHistorialConexion.pdf";//ruta linux prueba
            //logo windows:         C:/Reportes/logocipcdll.gif
            //rutaPDF = ruta.getRutaPDF() + "rptFormato.pdf";   //ruta linux server
            //logo linux:          /root/Desktop/pdf/logocipcdll.gif
            try {
                HttpServletRequest request = ControladorAbstracto.getRequest();
                rutaJasper = request.getRealPath(rutaJasper);
            //rutaPDF = request.getRealPath(rutaPDF);
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }

            try {
                File entrada = new File(rutaJasper);
                JasperPrint print = JasperFillManager.fillReport(new FileInputStream(entrada), parametros, new JRBeanCollectionDataSource(listaHistorial));
                if (ruta.generarPDF(rutaPDF, print)) {
                }
            } catch (Exception e) {
                System.out.println("-------" + e.toString());
            }
        } else {
            mostrarMensaje("Error", "Deben existir datos en la Lista para exportar", FacesMessage.SEVERITY_ERROR);
        }
        return "";
    }

    //MENSAJES
    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }
}
